package config;

import org.springframework.context.annotation.*;

/**
 *  该类是一个配置类，它的作用和 bean.xml 是一样的
 *  spring中的新注解
 *  Configuration
 *      作用：指定当前类是一个配置类
 *      细节：当配置类作为AnnotationConfigurationApplicationContext对象创建参数时，该注解可以不写
 *  ComponentScan:
 *      作用：用于通过注解指定spring在创建容器时要扫描的包
 *      属性：
 *          value：它的作用和basePackages的作用是一样的，都是用于指定创建容器要扫描的包
 *              我们使用此注解就等同于在xml配置了：
 *                  <context:component-scan base-package="com.sbl"></context:component-scan>
 * Bean
 *      作用：用于把当前方法的返回值作为bean对象存入到spring的ioc容器中
 *      属性：name：用于指定bean的id，当不写的时候，默认值是当前方法的名称
 *      细节：当我们使用注解配置方法时，如果  方法  有参数，spring框架回去容器中查找有没有可用的bean
 *      查找方式和AutoWired注解的作用是一样的（要容器中有唯一的一个bean对象类型和要注入的变量类型匹配，就可以注入成功）
 *
 *  PropertySource
 *      作用：用于指定properties文件的位置
 *      属性：
 *          value：指定文件的名称和路径
 *              关键字：classpath，表示类路径下
 *
 *  Import:导入其它配置类，在引入其它配置类时候，可以不再写@Configuration 注解，当然写上也没问题
 *          value：用于指定其它配置类的字节码，有该注解的配置类是主（父）配置类
 */
//@Configuration //用AnnotationConfigurationApplicationContext 可以省略这个注解
@ComponentScan(basePackages = "com.sbl")  //扫描的包，是其它使用@Service，@Controller注解 配置的对象，扫描放进容器| @Configuration注解的类也会扫描
@Import(JdbcConfig.class)
//@PropertySource("classpath:JdbcConfig.properties")
public class SpringConfiguration {
}
